import { ITable } from '@/api/common/table'

// 表格配置
export interface ITableConfig {
  successCode: number
  limit: number
  pageSizes: number[]
  paginationLayout: string
  border: boolean
  stripe: boolean
  request: ITable.Request
  parseData: (res: any) => ITable.Response
  columnSettingSave: (tableName: string, column: any) => Promise<boolean>
  columnSettingGet: (tableName: string, column: any) => Promise<any>
  columnSettingReset: (tableName: string, column: any) => Promise<any>
}

const TABLE_CONFIG: ITableConfig = {
  // 请求完成代码
  successCode: 200,

  // 表格每一页条数
  limit: 20,

  // 表格可设置的一页条数
  pageSizes: [10, 20, 30, 40, 50, 100],

  // 表格分页布局，可设置"total, sizes, prev, pager, next, jumper"
  paginationLayout: 'total, sizes, prev, pager, next, jumper',

  // 垂直边框
  border: false,

  // 斑马纹
  stripe: true,

  // 请求规定字段
  request: {
    page: 'page', //规定当前分页字段
    limit: 'limit', //规定一页条数字段
    prop: 'prop', //规定排序字段名字段
    order: 'order' //规定排序规格字段
  },

  // 响应数据
  parseData: (res: any) => {
    return {
      data: res.data, // 分析无分页的数据字段结构
      rows: res.data.rows, // 分析行数据字段结构
      total: res.data.total, // 分析总数字段结构
      summary: res.data.summary, // 分析合计行字段结构
      msg: res.message, // 分析描述字段结构
      code: res.code // 分析状态字段结构
    }
  },

  /**
   * 自定义列保存处理
   * @param tableName Table组件的props->tableName
   * @param column 用户配置好的列
   */
  columnSettingSave: async (tableName: string, column: ITable.Column): Promise<boolean> => {
    await new Promise((resolve) => {})
    return true
  },

  /**
   * 获取自定义列
   * @param tableName Table组件的props->tableName
   * @param column 组件接受到的props->column
   */
  columnSettingGet: async (tableName: string, column: ITable.Column): Promise<any> => {
    return column
  },
  /**
   * 重置自定义列
   * @param tableName Table组件的props->tableName
   * @param column 组件接受到的props->column
   */
  columnSettingReset: async (tableName: string, column: ITable.Column): Promise<any> => {
    await new Promise((resolve) => {
      // 这里为了演示使用了session和setTimeout演示，开发时应用数据请求
    })
    return column
  }
}

export default TABLE_CONFIG
